'''
鸭子类型：
    1. 鸭子类型：
        1. 鸭子类型：如果一个对象看起来像鸭子，那么它就是鸭子
        2. 鸭子类型：不需要关心对象的类型，只关心对象的行为
        3. 鸭子类型：在python中，不需要关心对象的类型，只关心对象的行为
        4. 鸭子类型：在python中，只要一个对象有相同的方法，那么它就是鸭子
'''
class fish:#鱼
    def swim(self):#游泳
        print('fish swim')
class shark(fish):
    def swim(self):#游泳
        print('shark swim')
class goldfish(fish):#鸭子
    def swim(self):#游泳
        print('goldfish swim')
class Person:
    def swim(self):#游泳
        print('Person swim')
class Bird:
    def swim(self):#游泳
        print('Bird swim')
class dog:
    def swim(self):#游泳
        print('dog swim')
        
class cat:
    def eat(self):#吃
        print('cat eat')

        
#==========================
#定义一个函数：游泳馆，只要把会游泳的放进来，都可以让它游泳（调用游泳的函数）
def swimporl(a:fish):
    a.swim()#调用游泳的函数
#创对象
f1 = fish()#鱼
s1 = shark()#鲨鱼
g1 = goldfish()#鸭子
#调用函数
swimporl(f1)#鱼
swimporl(s1)#鲨鱼
swimporl(g1)#鸭子

#-----------------------
p=Person()#人
b=Bird()#鸟
d=dog()#狗
swimporl(p)#人
swimporl(b)#鸟
swimporl(d)#狗

ct=cat()#猫
#swimporl(ct)#猫，报错，猫没有游泳的方法，所以不能调用游泳的函数